package co.edu.uniquindio.gui;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JTabbedPane;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JSeparator;
import javax.swing.JComboBox;
import javax.swing.JScrollBar;
import javax.swing.JTable;
import javax.swing.JTextField;

import co.edu.uniquindio.logica.Automovil;
import co.edu.uniquindio.logica.Subasta;

import javax.swing.JScrollPane;

public class VentanaConsultas extends JFrame implements ActionListener,ItemListener{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTable table;
	private JTable table_1;
    Automovil auto;
	private JTable table_2;
	private JTextField textField;
	private JTextField textField_1;
	private ButtonGroup miGroup1;
	private ButtonGroup miGroup2;
	private JTextField txtNombre;
	private JTextField txtCorreo;
	private JTextField txtAlias;
	private JButton btnEditar_1;
	private JLabel lblCedula_1;
	private JComboBox comboBox_2;
	private JLabel lblCalificacion_2;
	private JButton btnActualizar_1;
	private JButton btnNewButton_1;
	private String tipo_usu="Comprador";
	private JRadioButton rdbtnSubastaInglesa;
	private JRadioButton rdbtnSubastasilenciosa;
	private JRadioButton rdbtnSubastaHolandesa;
	private JRadioButton rdbtnVendedor;
	private JRadioButton rdbtnComprador;
	private String tipo_sub="Subasta Inglesa";
	private JComboBox comboBox_1;
	private JButton btnEditar;
	private JButton btnActualizar;
	private JButton btnNewButton;
	private JComboBox comboBox;
	private JLabel lblCalificacion_1;
	private JLabel lblNumero;
	public static VentanaConsultas me;
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					VentanaConsultas frame = new VentanaConsultas();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public VentanaConsultas() {
         initGUI();
	}
	/**
	 * este metodo em permite crear instancia unica de la clase VentanaConsultas 
	 * @return
	 */
	public static VentanaConsultas getVentanaConsultas()
    {
		if (me == null)
			me = new VentanaConsultas();
		return me;	
    }
	/**
	 * este metodo inicializa los componentes de la clase
	 */
	public void initGUI()
	{
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 750, 480);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(null);
		setContentPane(contentPane);
		
		JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
		tabbedPane.setBounds(0, 11, 734, 435);
		contentPane.add(tabbedPane);
		
		JPanel panel = new JPanel();
		tabbedPane.addTab("ConsultarUsuarios", null, panel, null);
		panel.setLayout(null);
		
		JLabel lblCedula = new JLabel("Cedula: ");
		lblCedula.setBounds(10, 92, 87, 14);
		panel.add(lblCedula);
		
		JLabel lblNombre = new JLabel("Nombre: ");
		lblNombre.setBounds(10, 117, 87, 14);
		panel.add(lblNombre);
		
		miGroup1 = new ButtonGroup();
		
		rdbtnComprador = new JRadioButton("Comprador");
		rdbtnComprador.setBounds(10, 32, 109, 23);
		rdbtnComprador.addActionListener(this);
		miGroup1.add(rdbtnComprador);
		panel.add(rdbtnComprador);
		
		rdbtnVendedor = new JRadioButton("Vendedor");
		rdbtnVendedor.setBounds(150, 32, 109, 23);
		rdbtnVendedor.addActionListener(this);
		miGroup1.add(rdbtnVendedor);
		panel.add(rdbtnVendedor);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(0, 26, 729, 2);
		panel.add(separator);
		
		JLabel lblSeleccioneElTipo = new JLabel("Seleccione el tipo de usuario");
		lblSeleccioneElTipo.setBounds(8, 11, 213, 14);
		panel.add(lblSeleccioneElTipo);
		
		JSeparator separator_1 = new JSeparator();
		separator_1.setBounds(0, 82, 729, 2);
		panel.add(separator_1);
		
		JLabel lblSeleccioneElDocumento = new JLabel("Seleccione el documento de identidad del usuario");
		lblSeleccioneElDocumento.setBounds(8, 67, 395, 14);
		panel.add(lblSeleccioneElDocumento);
		
		comboBox = new JComboBox();
		comboBox.setBounds(150, 89, 109, 17);
		panel.add(comboBox);
		
		JLabel lblNewLabel = new JLabel("Nombre del usuario selecionado");
		lblNewLabel.setBounds(150, 117, 109, 14);
		panel.add(lblNewLabel);
		
		JLabel lblCorreo = new JLabel("Correo:");
		lblCorreo.setBounds(8, 142, 89, 14);
		panel.add(lblCorreo);
		
		JLabel lblPais = new JLabel("Pais: ");
		lblPais.setBounds(10, 167, 87, 14);
		panel.add(lblPais);
		
		JLabel lblAlias = new JLabel("Alias: ");
		lblAlias.setBounds(10, 192, 87, 14);
		panel.add(lblAlias);
		
		JLabel lblCorreoDelUsuario = new JLabel("Correo del usuario...");
		lblCorreoDelUsuario.setBounds(150, 142, 109, 14);
		panel.add(lblCorreoDelUsuario);
		
		JLabel lblPaisDelUsuario = new JLabel("Pais del usuario...");
		lblPaisDelUsuario.setBounds(150, 167, 109, 14);
		panel.add(lblPaisDelUsuario);
		
		JLabel lblAliasDelUsuario = new JLabel("Alias del usuario...");
		lblAliasDelUsuario.setBounds(150, 192, 109, 14);
		panel.add(lblAliasDelUsuario);
		
		JSeparator separator_2 = new JSeparator();
		separator_2.setBounds(0, 260, 729, 2);
		panel.add(separator_2);
		
		JLabel lblInformacionExtra = new JLabel("Informacion adiccional");
		lblInformacionExtra.setBounds(8, 245, 265, 14);
		panel.add(lblInformacionExtra);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(10, 296, 379, 103);
		panel.add(scrollPane);
		
		JScrollPane scrollPane_1 = new JScrollPane();
		scrollPane_1.setBounds(417, 296, 302, 103);
		panel.add(scrollPane_1);
		
		TableModel tbl1Model = 
			new DefaultTableModel(new String[7][4],new String[] { "Placa", "Marca","Modelo","Propietario" });
		table = new JTable();
		table.setModel(tbl1Model);
		scrollPane_1.setViewportView(table);
		
		JLabel lblAutomoviles = new JLabel("Automoviles relacionados");
		lblAutomoviles.setBounds(417, 277, 135, 16);
		panel.add(lblAutomoviles);
		
		TableModel tbl1Model2 = 
			new DefaultTableModel(new String[7][5],new String[] { "Codigo",tipo_usu,"Monto base","Fecha inicial","Fecha final" });
		table_1 = new JTable();
		table_1.setModel(tbl1Model2);
		scrollPane.setViewportView(table_1);
		
		JLabel lblSubastas = new JLabel("Subastas relacionadas");
		lblSubastas.setBounds(10, 277, 158, 16);
		panel.add(lblSubastas); 
		
		JLabel lblCalificacion = new JLabel("Calificacion.....");
		lblCalificacion.setBounds(150, 218, 160, 16);
		panel.add(lblCalificacion);
		
		lblCalificacion_1 = new JLabel("Calificacion: ");
		lblCalificacion_1.setBounds(10, 217, 113, 16);
		lblCalificacion_1.setVisible(false);
		panel.add(lblCalificacion_1);
		
		lblCedula_1 = new JLabel("cedula...");
		lblCedula_1.setBounds(325, 92, 86, 14);
		lblCedula_1.setVisible(false);
		panel.add(lblCedula_1);
		
		txtNombre = new JTextField();
		txtNombre.setText("nombre...");
		txtNombre.setBounds(325, 114, 86, 18);
		txtNombre.setVisible(false);
		panel.add(txtNombre);
		txtNombre.setColumns(10);
		
		txtCorreo = new JTextField();
		txtCorreo.setText("correo...");
		txtCorreo.setBounds(325, 139, 86, 18);
		txtCorreo.setVisible(false);
		panel.add(txtCorreo);
		txtCorreo.setColumns(10);
		
		comboBox_2 = new JComboBox();
		comboBox_2.setBounds(325, 164, 86, 18);
		comboBox_2.setVisible(false);
		panel.add(comboBox_2);
		
		txtAlias = new JTextField();
		txtAlias.setText("alias...");
		txtAlias.setBounds(325, 189, 86, 18);
		txtAlias.setVisible(false);
		panel.add(txtAlias);
		txtAlias.setColumns(10);
		
		lblCalificacion_2 = new JLabel("calificacion...");
		lblCalificacion_2.setBounds(325, 219, 86, 14);
		panel.add(lblCalificacion_2);
		
		btnEditar_1 = new JButton("Editar");
		btnEditar_1.setBounds(525, 117, 89, 23);
		btnEditar_1.addActionListener(this);
		panel.add(btnEditar_1);
		
		btnActualizar_1 = new JButton("Actualizar");
		btnActualizar_1.setBounds(525, 163, 89, 23);
		btnActualizar_1.addActionListener(this);
		panel.add(btnActualizar_1);
		
		btnNewButton_1 = new JButton("Eliminar");
		btnNewButton_1.setBounds(525, 211, 89, 23);
		btnNewButton_1.addActionListener(this);
		panel.add(btnNewButton_1);
		
		JPanel panel_1 = new JPanel();
		tabbedPane.addTab("ConsultarSubastas", null, panel_1, null);
		panel_1.setLayout(null);
		
		miGroup2 = new ButtonGroup();
		
		rdbtnSubastasilenciosa = new JRadioButton("Subasta Silenciosa");
		rdbtnSubastasilenciosa.setBounds(16, 39, 140, 18);
		rdbtnSubastasilenciosa.addItemListener(this);
		miGroup2.add(rdbtnSubastasilenciosa);
		panel_1.add(rdbtnSubastasilenciosa);
		
		rdbtnSubastaInglesa = new JRadioButton("Subasta Inglesa");
		rdbtnSubastaInglesa.setBounds(196, 39, 140, 18);
		rdbtnSubastaInglesa.addItemListener(this);
		miGroup2.add(rdbtnSubastaInglesa);
		panel_1.add(rdbtnSubastaInglesa);
		
		rdbtnSubastaHolandesa = new JRadioButton("Subasta Holandesa");
		rdbtnSubastaHolandesa.setBounds(367, 39, 140, 18);
		rdbtnSubastaHolandesa.addItemListener(this);
		miGroup2.add(rdbtnSubastaHolandesa);
		panel_1.add(rdbtnSubastaHolandesa);
		
		JSeparator separator_3 = new JSeparator();
		separator_3.setBounds(0, 28, 729, 2);
		panel_1.add(separator_3);
		
		JLabel lblIndiqueElTipo = new JLabel("Indique el tipo de subasta a buscar");
		lblIndiqueElTipo.setBounds(6, 11, 317, 16);
		panel_1.add(lblIndiqueElTipo);
		
		JSeparator separator_4 = new JSeparator();
		separator_4.setBounds(0, 95, 729, 2);
		panel_1.add(separator_4);
		
		JLabel lblIndiqueElCodigo = new JLabel("Subastas segun el tipo");
		lblIndiqueElCodigo.setBounds(6, 78, 194, 16);
		panel_1.add(lblIndiqueElCodigo);
		
		JLabel lblNumeroDeLa = new JLabel("Numero de la subasta: ");
		lblNumeroDeLa.setBounds(16, 267, 168, 16);
		panel_1.add(lblNumeroDeLa);
		
		comboBox_1 = new JComboBox();
		comboBox_1.setBounds(250, 267, 86, 17);
		panel_1.add(comboBox_1);
		
		JLabel lblIdentificacionDelVendedor = new JLabel("Identificacion del vendedor: ");
		lblIdentificacionDelVendedor.setBounds(16, 294, 168, 16);
		panel_1.add(lblIdentificacionDelVendedor);
		
		JLabel lblIdentificacion = new JLabel("Identificacion...");
		lblIdentificacion.setBounds(250, 295, 127, 16);
		panel_1.add(lblIdentificacion);
		
		JLabel lblPresioBase = new JLabel("Presio base: ");
		lblPresioBase.setBounds(16, 321, 168, 16);
		panel_1.add(lblPresioBase);
		
		JLabel lblPrecio = new JLabel("Precio...");
		lblPrecio.setBounds(250, 321, 86, 16);
		panel_1.add(lblPrecio);
		
		JSeparator separator_5 = new JSeparator();
		separator_5.setBounds(0, 254, 729, 2);
		panel_1.add(separator_5);
		
		JLabel lblInformacionAdiccional = new JLabel("Informacion adiccional");
		lblInformacionAdiccional.setBounds(6, 236, 194, 16);
		panel_1.add(lblInformacionAdiccional);
		
		JLabel lblReserva = new JLabel("Reserva: ");
		lblReserva.setBounds(16, 348, 140, 16);
		panel_1.add(lblReserva);
		
		JLabel lblRserva = new JLabel("Rserva...");
		lblRserva.setBounds(250, 348, 86, 16);
		panel_1.add(lblRserva);
		
		JScrollPane scrollPane_2 = new JScrollPane();
		scrollPane_2.setBounds(16, 133, 703, 92);
		panel_1.add(scrollPane_2);
		
		TableModel tbl1Model3 = 
			new DefaultTableModel(new String[7][6],new String[] { "Codigo","Tipo","Vendedor","Monto base","Fecha inicial","Fecha final" });
		table_2 = new JTable();
		table_2.setModel(tbl1Model3);
		scrollPane_2.setViewportView(table_2);
		
		JLabel lblSubastas_1 = new JLabel("Subastas");
		lblSubastas_1.setBounds(16, 108, 79, 14);
		panel_1.add(lblSubastas_1);
		
		btnEditar = new JButton("Editar");
		btnEditar.setBounds(619, 291, 100, 23);
		panel_1.add(btnEditar);
		
		btnActualizar = new JButton("Actualizar");
		btnActualizar.setBounds(619, 318, 100, 23);
		panel_1.add(btnActualizar);
		
		lblNumero = new JLabel("numero......");
		lblNumero.setBounds(425, 268, 82, 14);
		lblNumero.setVisible(false);
		panel_1.add(lblNumero);
		
		textField = new JTextField();
		textField.setBounds(425, 320, 86, 18);
		textField.setVisible(false);
		panel_1.add(textField);
		textField.setColumns(10);
		
		textField_1 = new JTextField();
		textField_1.setBounds(425, 346, 86, 18);
		textField_1.setVisible(false);
		panel_1.add(textField_1);
		textField_1.setColumns(10);
		
		btnNewButton = new JButton("Eliminar");
		btnNewButton.setBounds(619, 345, 100, 23);
		panel_1.add(btnNewButton);
	}
	 
	
	public void listToJTableSubastaTipo(List<Subasta> subastas)
	{
	    DefaultTableModel tabla=(DefaultTableModel) table_2.getModel();
	    tabla.setColumnIdentifiers(new String[]{ "Codigo","Tipo","Monto base","Fecha inicial","Fecha final" } );
	    tabla.setRowCount(0);
	    for(Subasta pre: subastas)
	    {	
	    	Object[] datos={pre.getNumSubasta(), tipo_sub, pre.getPrecioBase(), pre.getFechaInicio(),pre.getFechaCierre()};
	    	tabla.addRow(datos);
	    }
	    table_2.setModel(tabla);
	    table_2.repaint();
	}
	
	public void listToJTableSubasta(List<Subasta> subastas)
	{
	    DefaultTableModel tabla=(DefaultTableModel) table_1.getModel();
	    tabla.setColumnIdentifiers(new String[]{ "Codigo",tipo_usu,"Monto base","Fecha inicial","Fecha final" } );
	    tabla.setRowCount(0);
	    for(Subasta pre: subastas)
	    {	
	    	Object[] datos={pre.getNumSubasta(), pre.getVendedor().getCedula(), pre.getPrecioBase(), pre.getFechaInicio(),pre.getFechaCierre()};
	    	tabla.addRow(datos);
	    }
	    table_1.setModel(tabla);
	    table_1.repaint();
	}
	
	public void listToJTableAutomovil(List<Automovil> autos)
	{
		DefaultTableModel tab1=(DefaultTableModel) table.getModel();
	    tab1.setColumnIdentifiers(new String[]{ "Placa","Marca","Modelo","Propietario"} );
		tab1.setRowCount(0);
		for(Automovil p: autos)
		{
			Object[] datos={p.getNumeroPlaca(), p.getModelo().getMarca(), p.getModelo().getNombre(), p.getVendedor().getCedula()};
			tab1.addRow(datos);
		}
		table.setModel(tab1);
		table.repaint();
	}

	@Override
	public void actionPerformed(ActionEvent e) 
	{
		if(e.getSource()==btnEditar_1)
		{
			txtNombre.setVisible(true);
			txtNombre.setText("cool1");
			
			txtCorreo.setVisible(true);
			txtCorreo.setText("cool2");
			
			txtAlias.setVisible(true);
			txtAlias.setText("cool3");
			
			lblCedula_1.setVisible(true);
			
			comboBox_2.setVisible(true);
			
			lblCalificacion_2.setVisible(true);
		}
		if(e.getSource()==btnEditar)
		{
			textField.setVisible(true);
			textField_1.setVisible(true);
			lblNumero.setVisible(true);
		}
	}

	@Override
	public void itemStateChanged(ItemEvent e) 
	{
		if(e.getSource()==rdbtnComprador)
		{
			setTipo_usu("Comprador");
			table_1.repaint();
		}
		if(e.getSource()==rdbtnVendedor)
		{
			setTipo_usu("Vendedor");
			table_1.repaint();
		}
		if(e.getSource()==rdbtnSubastasilenciosa)
		{
			setTipo_sub("Subasta Silenciosa");
			table_2.repaint();
		}
		if(e.getSource()==rdbtnSubastaHolandesa)
		{
			setTipo_sub("Subasta Holandesa");
			table_2.repaint();
		}
		if(e.getSource()==rdbtnSubastaInglesa)
		{
			setTipo_sub("Subasta Inglesa");
			table_2.repaint();
		}
	}
	
	public String getTipo_usu() 
	{
		return tipo_usu;
	}

	public void setTipo_usu(String tipo_sub) 
	{
		this.tipo_usu = tipo_sub;
	}
	
	public String getTipo_sub() 
	{
		return tipo_sub;
	}

	public void setTipo_sub(String tipo_sub) 
	{
		this.tipo_sub = tipo_sub;
	}

	

}
